package com.sisbibvir.unmsm.controller;


import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;

import com.sisbibvir.unmsm.dao.AlumnoDAO;
import com.sisbibvir.unmsm.dao.AsesorDAO;
import com.sisbibvir.unmsm.dao.DepartamentoDAO;
import com.sisbibvir.unmsm.dao.JPAUtil;
import com.sisbibvir.unmsm.dao.PropuestaDAO;
import com.sisbibvir.unmsm.dao.TipoUsuarioDAO;
import com.sisbibvir.unmsm.dao.UsuarioDAO;
import com.sisbibvir.unmsm.entidades.Alumno;
import com.sisbibvir.unmsm.entidades.DepartamentoAcademico;
import com.sisbibvir.unmsm.entidades.Profesor;
import com.sisbibvir.unmsm.entidades.Propuesta;
import com.sisbibvir.unmsm.entidades.TipoUsuario;
import com.sisbibvir.unmsm.entidades.Usuario;

@ManagedBean(name = "regAsesor")
@SessionScoped
public class RegistrarAsesorController {
	private JPAUtil util;
	private AsesorDAO asesorDAO;
	private TipoUsuarioDAO tipoDAO;
	private DepartamentoDAO depaDAO;
	private UsuarioDAO usuarioDAO;
	
	
	private Profesor asesor;
	private TipoUsuario tipoUsuario;
	private Usuario usuario;
	private DepartamentoAcademico depa;
	
	
	private int codigo;
	public int getCodigo() {
		return codigo;
	}
	public void setCodigo(int codigo) {
		this.codigo = codigo;
	}
	public String getNombre() {
		return nombre;
	}
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	public String getaPaterno() {
		return aPaterno;
	}
	public void setaPaterno(String aPaterno) {
		this.aPaterno = aPaterno;
	}
	public String getaMaterno() {
		return aMaterno;
	}
	public void setaMaterno(String aMaterno) {
		this.aMaterno = aMaterno;
	}
	public String getCorreo() {
		return correo;
	}
	public void setCorreo(String correo) {
		this.correo = correo;
	}
	public String getTelefono() {
		return telefono;
	}
	public void setTelefono(String telefono) {
		this.telefono = telefono;
	}
	public String getDireccion() {
		return direccion;
	}
	public void setDireccion(String direccion) {
		this.direccion = direccion;
	}
	public String getDni() {
		return dni;
	}
	public void setDni(String dni) {
		this.dni = dni;
	}
	public String getUsuario_id() {
		return usuario_id;
	}
	public void setUsuario_id(String usuario_id) {
		this.usuario_id = usuario_id;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	private String nombre="" ;
	private String aPaterno="",linea="",aMaterno="",correo="",telefono="",universidad="",grado="",especialidad="",departamento="",direccion="",dni="" ,usuario_id,password;
	public String getLinea() {
		return linea;
	}
	public void setLinea(String linea) {
		this.linea = linea;
	}
	public String getDepartamento() {
		return departamento;
	}
	public void setDepartamento(String departamento) {
		this.departamento = departamento;
	}
	public String getUniversidad() {
		return universidad;
	}
	public void setUniversidad(String universidad) {
		this.universidad = universidad;
	}
	public String getGrado() {
		return grado;
	}
	public void setGrado(String grado) {
		this.grado = grado;
	}
	public String getEspecialidad() {
		return especialidad;
	}
	public void setEspecialidad(String especialidad) {
		this.especialidad = especialidad;
	}
	
	public void agregar(ActionEvent actionEvent) {
		
		util =  new JPAUtil();
		
		int a=3;
		String cod;
		
		asesorDAO = new AsesorDAO(util.getEntityManager());
		tipoDAO = new TipoUsuarioDAO(util.getEntityManager());
		usuarioDAO = new UsuarioDAO(util.getEntityManager());
		depaDAO = new DepartamentoDAO(util.getEntityManager());
		//alumno = new Alumno();
		
		usuario = new Usuario();
		tipoUsuario=new TipoUsuario();
		depa=new DepartamentoAcademico();
		asesor=new Profesor();
		 FacesContext context = FacesContext.getCurrentInstance(); 
		try {
			
		password=nombre.substring(0,1)+aPaterno+aMaterno.substring(0,1);
		System.out.println("password: "+ password);
		/*usuario.setId(valuecodigo);
		usuario.setPassword(password);
		tipoUsuario.setId(2);
		usuario.setTipoUsuario(tipoUsuario);*/
		asesor.setId(codigo);
		asesor.setNombre(nombre);
		asesor.setApellidoP(aPaterno);
		asesor.setApellidoM(aMaterno);
		depa.setId(1);
		asesor.setDepartamentoAcademico(depa);
		asesor.setDireccion(direccion);
		asesor.setTelefono(telefono);
		asesor.setCorreo(correo);
		//alumno.anadeUsuario(usuario);
		asesorDAO.create(asesor);
		System.out.println("todo bien???"+codigo+" "+nombre+" " +aPaterno+" "+aMaterno+" "+direccion);
		System.out.println(telefono+" "+correo);
		 
         
	        context.addMessage(null, new FacesMessage("Exitoso", "SE CREO CORRECTAMENTE " + codigo+" "+nombre+" "+aPaterno));  
	      //  context.addMessage(null, new FacesMessage("Second Message", "Additional Info Here..."));  
		util = null;
		System.gc();
		} catch (Exception e) {
			context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"No se Puede Crear", " " + codigo+" "+nombre+" "+aPaterno));
			// TODO: handle exception
		}
		
		
		}
	
	public void buscar(ActionEvent actionEvent){
		util = new JPAUtil();
		asesorDAO = new AsesorDAO(util.getEntityManager());
		asesor=new Profesor();
		depa=new DepartamentoAcademico();
		FacesContext context = FacesContext.getCurrentInstance();
		try {
			asesor=asesorDAO.read(codigo);
			aPaterno=asesor.getApellidoP();
			aMaterno=asesor.getApellidoM();
			nombre=asesor.getNombre();
			correo=asesor.getCorreo();
			
			// departamento="aca es";
					depa=asesor.getDepartamentoAcademico();
					departamento= depa.getNombDepartamento_Academico();
			direccion=asesor.getDireccion();
			telefono=asesor.getTelefono();
			universidad="unmsm";
			especialidad="ing de sistemas";
			grado="profesional";
			linea="ingenieria de software";
			dni=asesor.getDni();
			  
	         
	        context.addMessage(null, new FacesMessage("Encontrado", " " + codigo+" "+nombre+" "+aPaterno));
			
		} catch (Exception e) {
			System.out.println("no se encontro  "
					+ e.getMessage());
			nombre="";
			correo="";
			aPaterno="";
			aMaterno="";
			telefono="";
			direccion="";
			departamento="";
			dni="";
			context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"No se Encontrado", " " + codigo+" "+nombre+" "+aPaterno));
		}
		
		util = null;
		System.gc();
	}
	
	public void eliminar(ActionEvent actionEvent){
	
		util = new JPAUtil();
		asesorDAO = new AsesorDAO(util.getEntityManager());
		FacesContext context = FacesContext.getCurrentInstance();
		try {
		
	
			
			asesorDAO.delete(asesor);
			util = null;
			System.gc();
			asesor = new Profesor();
			nombre="";
			correo="";
			aPaterno="";
			aMaterno="";
			telefono="";
			direccion="";
			departamento="";
			dni="";
			universidad="";
			especialidad="";
			grado="";
			linea="";
			context.addMessage(null, new FacesMessage("Eliminado", " " + codigo+" "+nombre+" "+aPaterno));
			
	} catch (Exception e) {
		
		context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"No se puede eliminar", " " + codigo+" "+nombre+" "+aPaterno));
		// TODO: handle exception
	}
			
	}
	
	public void modificar(ActionEvent actionEvent){
		util = new JPAUtil();
		asesorDAO = new AsesorDAO(util.getEntityManager());
		FacesContext context = FacesContext.getCurrentInstance();
		try {
			
		asesor.setId(codigo);
		asesor.setApellidoP(aPaterno);
		asesor.setId(codigo);
		asesor.setNombre(nombre);
		asesor.setApellidoP(aPaterno);
		asesor.setApellidoM(aMaterno);
		depa.setId(1);
		asesor.setDepartamentoAcademico(depa);
		asesor.setDireccion(direccion);
		asesor.setTelefono(telefono);
		asesor.setCorreo(correo);
		asesorDAO.update(asesor);
		util = null;
		System.gc();
		context.addMessage(null, new FacesMessage("Modificado", " " + codigo+" "+nombre+" "+aPaterno));
		
		} catch (Exception e) {
			context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"No se puede modificar", " " + codigo+" "+nombre+" "+aPaterno));
			
			// TODO: handle exception
		}
	}
}
